//
//  LSZStatusListViewModel.swift
//  醒浪微博
//
//  Created by 雷顺哲 on 16/7/13.
//  Copyright © 2016年 LSZ. All rights reserved.
//

import UIKit
//这个ViewModel对应的视图是首页的tableView
class LSZStatusListViewModel: NSObject {
//    微博数据源
    
    lazy var statusList: [LSZStatusViewModel] = [LSZStatusViewModel]()
    
//    加载微博数据
    func loadStatus(isPullUp: Bool, callBack: (isSuccess: Bool, message: String) -> ()){
        //  上拉加载默认值0
        var maxId: Int64 = 0
        var sinceId: Int64 = 0
        
        if isPullUp {
            maxId = statusList.last?.status?.id ?? 0
            if maxId > 0 {
                maxId -= 1
            }
        }else{
            sinceId = statusList.first?.status?.id ?? 0
        }
        
        var message = "没有加载到最新的微博数据"
        LSZNetworkTools.sharedToos.loadStatus(maxId, sinceId: sinceId) { (response, error) -> () in
         
            if error != nil {
                callBack(isSuccess: false, message: message)
                return
            }
            
            
//            代码执行到此说明成功回调
            guard let dic = response as? [String :AnyObject] else {
               callBack(isSuccess: false, message: message)
                return
            }
            
//            代码执行到这里说明是字典格式
            guard let statusDicArray = dic["statuses"] as? [[String : AnyObject]] else {
                callBack(isSuccess: false, message: message)
                return
            }
            
            
//            遍历字典数组,完成字典转模型
            var tempArr = [LSZStatusViewModel]()
            
            for statusDic in statusDicArray {
                let status = LSZStatus(dic: statusDic)
                
                let statusViewModel = LSZStatusViewModel(status: status)
                
                tempArr.append(statusViewModel)
            }
//            追加数据
            if isPullUp{
//                上啦加载更多
                self.statusList.appendContentsOf(tempArr)
                
            } else {
//                下拉刷新
//                self.statusList = tempArr + self.statusList
                self.statusList.insertContentsOf(tempArr, at: 0)
            }
            
//            self.statusList.appendContentsOf(tempArr)
//            判断服务器端的数据是否大于0
            if tempArr.count > 0 {
                message = "加载了\(tempArr.count)条微博数据"
            }
            
            callBack(isSuccess: true, message: message)
            
        }
    }
}
